/*** 
 * @_______________#########_______________________ 
 * @______________############_____________________ 
 * @______________#############____________________ 
 * @_____________##__###########___________________ 
 * @____________###__######_#####__________________ 
 * @____________###_#######___####_________________ 
 * @___________###__##########_####________________ 
 * @__________####__###########_####_______________ 
 * @________#####___###########__#####_____________ 
 * @_______######___###_########___#####___________ 
 * @_______#####___###___########___######_________ 
 * @______######___###__###########___######_______ 
 * @_____######___####_##############__######______ 
 * @____#######__#####################_#######_____ 
 * @____#######__##############################____ 
 * @___#######__######_#################_#######___ 
 * @___#######__######_######_#########___######___ 
 * @___#######____##__######___######_____######___ 
 * @___#######________######____#####_____#####____ 
 * @____######________#####_____#####_____####_____ 
 * @_____#####________####______#####_____###______ 
 * @______#####______;###________###______#________ 
 * @________##_______####________####______________ 
 * @
 * @Author: ipk518 18163976442@163.com
 * @Date: 2024-10-22 16:53:15
 * @LastEditors: ipk518 18163976442@163.com
 * @LastEditTime: 2024-11-28 16:11:06
 * @FilePath: /etws-sxk2307V1.3/src/dataShare/queueShare.h
 * @Description: 
 * @************佛祖保佑************
 * @Copyright (c) 2024 by etws@quyujiang, All Rights Reserved. 
 */
#ifndef _QUEUE_SHARE_
#define _QUEUE_SHARE_

#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <iostream>
#include <mutex>
#include <queue>

using namespace std;

class queueShare
{
public:
    queueShare(int64_t maxSize = 1000);
    ~queueShare();
private:
    int64_t m_maxSize;
    std::mutex m_dataMtx;
    std::queue< uint8_t > m_dataQue;
    unsigned char m_buffer[1024];
public:
    void removeAll();
    bool dataIsValid();
    int64_t dataSize();
    uint8_t take();
    int take(unsigned char *data,size_t len);
    void remove(size_t len);
    int recvfrom(unsigned char *data,size_t len);
};

#endif